package com.wuxu.postman_demo.spring;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;

@RestController
//   上面等同下面写法
//@Controller
//@ResponseBody
public class controller {
    /*
     * 原始获取请求数据方式：使用HttpServletRequest对象取参数
     */
    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request) {

       String name = request.getParameter("name");
       String age =  request.getParameter("age");

       System.out.println(name + " " + age);

        return "ok";
    }


    /*
     * 非原始&post请求：实体参数
     *
     * springboot 会自动解析
     */
    @RequestMapping("/simpleParam2")
    public String simpleParam2(String name, Integer age) {
        System.out.println(name + " " + age);
        return "ok";
    }

    /*
     * 非原始&post请求：实体参数- UserData
     *
     * postman中的Param添加key、value。  post、get 都行
     *
     * springboot 会自动解析
     */
    @RequestMapping("/simpleParam3")
    public String simpleParam3(UserData userData) {
        System.out.println(userData.toString());
        return "ok";
    }


    /*
    * 数组
    * postman中的Param添加相同key多个参数
    *
    * 参数用数组接收
    */
    @RequestMapping("/simpleArray")
    public String simpleArray(String[] name) {
        System.out.println(Arrays.toString(name));
        return "simpleArray";
    }

    /*
     * 集合
     * postman中的Param添加相同key多个参数
     *
     * 参数用集合接收
     */
    @RequestMapping("/simpleList")
    public String simpleList(@RequestParam List<String> listName) {
        System.out.println(listName.toString());
        return "ok";
    }

    /*
     * 路径参数
     * postman中的Param添加相同key多个参数
     *
     */
    @RequestMapping("/path/{id}/{name}")
    public String simplePath(@PathVariable Integer id,@PathVariable String name) {
        System.out.println(id+" "+name);
        return "simplePath";
    }


    /*
     * 日期参数
     */
    @RequestMapping("/time")
    public String simpleTime(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime) {
        System.out.println(updateTime);
        return "simpleTime";
    }

    /*
     * json参数
     *
     * @RequestBody 修饰，会自动将json数据转换为UserData实例对象
     */
    @RequestMapping("/json")
    public String simpleJson(@RequestBody UserData userData) {
        System.out.println(userData.toString());
        return "simpleJson";
    }
}